home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-03-15 | 9.7 KB | 308 lines |
- 100 REM MENU Program
- 110 REM Menu of the available Genealogy Programs.
- 120 REM Copyright (c) 1983 - 1987 by: Melvin O. Duke.
- 130 DEFINT A-Z
- 200 REM Screen Definitions
- 210 S1 = 0 'Set Text Mode
- 220 S2 = 1 'Enable Color
- 230 S3 = 0 'Active Page
- 240 S4 = 0 'Visual Page
- 250 WIDTH "scrn:",80
- 260 SCREEN S1, S2, S3, S4
- 300 REM Color Definitions
- 310 K = 0 'blacK
- 320 N = 1 'blue (Navy or uNderline)
- 330 G = 2 'Green
- 340 B = 3 'cyan (light Blue)
- 350 R = 4 'Red
- 360 P = 5 'magenta (Purple)
- 370 O = 6 'brown (Orange)
- 380 W = 7 'White
- 400 REM Disk Definitions
- 410 DD.MENU$ = "a:\"
- 420 DD.VERI$ = "a:\"
- 430 DD.PROG$ = "a:\"
- 440 DD.PERS$ = "a:\"
- 450 DD.MARR$ = "a:\"
- 460 DD.ORD$ = "a:\"
- 470 DD.PCIDX$ = "a:\"
- 480 DD.MARIDX$ = "a:\"
- 500 REM Printer Definitions
- 510 FORM.FEED$ = CHR$(12)
- 520 PAP.SENS.ON$ = CHR$(27)+"9"
- 530 PAP.SENS.OFF$ = CHR$(27)+"8"
- 540 PAP.LONG$ = CHR$(27)+"C"+CHR$(66)
- 550 PAP.SHORT$ = CHR$(27)+"C"+CHR$(51)
- 560 COMPR.ON$ = CHR$(15)
- 570 COMPR.OFF$ = CHR$(18)
- 580 BOLD.ON$ = CHR$(27)+"E"
- 590 BOLD.OFF$ = CHR$(27)+"F"
- 600 REM Constants
- 610 MAX.PER = 500
- 620 MAX.MAR = 200
- 630 OLD.MAX.PER = 0
- 640 OLD.MAX.MAR = 0
- 650 MAX.GEN = 30 'For DESCEND
- 660 MAX.LINES = 58 'For DESCEND
- 670 CHART.NOS$ = "n"
- 680 START.PER = 1
- 690 START.MAR = 1
- 700 '
- 710 LEFT.SPACE = 18 'For FAMILY
- 720 BEGIN.LTR$ = "A"
- 730 END.LTR$ = "Z"
- 740 MALE.LTR$ = "M" : MALE.SEX$ = "Male"
- 750 FEMALE.LTR$ = "F" : FEMALE.SEX$ = "Female"
- 760 WIDE = 1 'narrow
- 770 LENGTH = 2 'long
- 780 FORMS = 1 'continuous
- 800 REM Function Key Settings
- 810 KEY 1, ""
- 820 KEY 2, ""
- 830 KEY 3, ""
- 840 KEY 4, ""
- 850 KEY 5, ""
- 860 KEY 6, ""
- 870 KEY 7, ""
- 880 KEY 8, ""
- 890 KEY 9, ""
- 900 KEY 10, ""
- 1000 REM Titles
- 1010 TITLE$ = "MENU of Programs in Genealogy"
- 1020 TITLE$ = TITLE$ + " ON DISPLAY"
- 1030 VERSION$ = "Version 5.0"
- 1040 COPY1$ = "Copyright (c) 1983 thru 1987, by:"
- 1050 COPY2$ = "Melvin O. Duke"
- 1060 PRICE$ = "$45"
- 1070 ADDR1$ = "Melvin O. Duke"
- 1080 ADDR2$ = "P. O. Box 20836"
- 1090 ADDR3$ = "San Jose, CA 95160"
- 1100 REM Make sure that BASIC was invoked with /s:256
- 1110 ON ERROR GOTO 1170
- 1120 OPEN DD.VERI$+"verifile" AS #1 LEN = 256
- 1130 ON ERROR GOTO 0
- 1140 FIELD 1, 128 AS DUMY1$, 128 AS DUMY2$
- 1150 CLOSE
- 1160 GOTO 1300
- 1170 IF ERR = 5 THEN 1180 ELSE ON ERROR GOTO 0 : GOTO 1120
- 1180 REM File Buffer less than 256 bytes
- 1190 KEY ON : CLS : LOCATE 10,1 : COLOR R,B
- 1200 PRINT "BASIC must be brought up with /s:256, for Genealogy Records."
- 1210 PRINT "Program has been Terminated."
- 1220 PRINT "Enter CONT to return to DOS"
- 1230 COLOR W,K : STOP
- 1240 SYSTEM
- 1300 REM Produce the first screen
- 1310 KEY ON : CLS : KEY OFF
- 1320 REM Draw the outer double box
- 1330 R1 = 1 : C1 = 1 : R2 = 24 : C2 = 79 : GOSUB 1600
- 1340 REM Find the title location
- 1350 TITLE.POS = 40 - INT(LEN(TITLE$)/2)
- 1360 REM Draw the title box
- 1370 R1=3:C1=TITLE.POS-2:R2=6:C2=TITLE.POS+LEN(TITLE$)+1:GOSUB 1800
- 1380 REM Print the title
- 1390 LOCATE 4,TITLE.POS : PRINT TITLE$
- 1400 LOCATE 5,40-INT(LEN(VERSION$)/2) : PRINT VERSION$;
- 1410 REM Draw the Contribution box
- 1420 R1 = 7 : C1 = 18 : R2 = 17 : C2 = 61 : GOSUB 1600
- 1430 REM Request the Contribution
- 1440 LOCATE 8,20 : PRINT "If you are using these programs, you are"
- 1450 LOCATE 9,21 : PRINT "expected to become a Registered User,"
- 1460 LOCATE 10,20 : PRINT "by making a contribution to the author"
- 1470 LOCATE 11,23 : PRINT "of the programs ("+PRICE$+" suggested)."
- 1480 REM Draw the Mailing Label
- 1490 R1 = 12 : C1 = 28 : R2 = 16 : C2 = 52 : GOSUB 1800
- 1500 REM Print the Name and Address
- 1510 LOCATE 13,40-INT(LEN(ADDR1$)/2) : PRINT ADDR1$;
- 1520 LOCATE 14,40-INT(LEN(ADDR2$)/2) : PRINT ADDR2$;
- 1530 LOCATE 15,40-INT(LEN(ADDR3$)/2) : PRINT ADDR3$;
- 1540 REM Draw the Copyright box
- 1550 R1 = 19 : C1 = 21 : R2 = 22 : C2 = 59 : GOSUB 1600
- 1560 REM Print the Copyright
- 1570 LOCATE 20,40-INT(LEN(COPY1$)/2) : PRINT COPY1$;
- 1580 LOCATE 21,40-INT(LEN(COPY2$)/2) : PRINT COPY2$;
- 1590 GOTO 1940
- 1600 REM subroutine to print a double box
- 1610 COLOR P
- 1620 FOR I = R1 + 1 TO R2 - 1
- 1630 LOCATE I, C1 : PRINT CHR$(186);
- 1640 LOCATE I, C2 : PRINT CHR$(186);
- 1650 NEXT I
- 1660 LOCATE R1, C1+1 : PRINT STRING$(C2-C1-1,205);
- 1670 LOCATE R2, C1+1 : PRINT STRING$(C2-C1-1,205);
- 1680 LOCATE R1, C1 : PRINT CHR$(201);
- 1690 LOCATE R1, C2 : PRINT CHR$(187);
- 1700 LOCATE R2, C1 : PRINT CHR$(200);
- 1710 LOCATE R2, C2 : PRINT CHR$(188);
- 1720 COLOR W
- 1730 RETURN
- 1800 REM subroutine to print a single box
- 1810 COLOR B
- 1820 FOR I = R1 + 1 TO R2 - 1
- 1830 LOCATE I, C1 : PRINT CHR$(179);
- 1840 LOCATE I, C2 : PRINT CHR$(179);
- 1850 NEXT I
- 1860 LOCATE R1, C1+1 : PRINT STRING$(C2-C1-1,196);
- 1870 LOCATE R2, C1+1 : PRINT STRING$(C2-C1-1,196);
- 1880 LOCATE R1, C1 : PRINT CHR$(218);
- 1890 LOCATE R1, C2 : PRINT CHR$(191);
- 1900 LOCATE R2, C1 : PRINT CHR$(192);
- 1910 LOCATE R2, C2 : PRINT CHR$(217);
- 1920 COLOR W
- 1930 RETURN
- 1940 REM ask user to press a key to continue
- 1950 LOCATE 25,1
- 1960 PRINT "Have Program Diskette in place, then press any key to continue.";
- 1970 A$ = INKEY$ : IF A$ = "" THEN 1970
- 1980 KEY ON : CLS : KEY OFF
- 2000 REM MENU Program Starts Here.
- 2010 IF DD.ORD$ = "no\" THEN DD.ORD$ = "no"
- 2020 REM Draw the Menu itself.
- 2030 REM Draw the Outer Double Box.
- 2040 R1 = 1 : C1 = 1 : R2 = 23 : C2 = 79 : GOSUB 1600
- 2050 REM Draw the Heading Separator.
- 2060 R1 = 3 : C1 = 1 : R2 = 3 : C2 = 79 : GOSUB 3190
- 2070 REM Draw the Vertical Separators.
- 2080 R1 = 1 : C1 = 6 : R2 = 23 : C2 = 6 : GOSUB 3260
- 2090 R1 = 1 : C1 =17 : R2 = 23 : C2 =17 : GOSUB 3260
- 2100 REM Attach the intersections
- 2110 COLOR P
- 2120 LOCATE 3, 6 : PRINT CHR$(197);
- 2130 LOCATE 3,17 : PRINT CHR$(197);
- 2140 COLOR W,K
- 2150 REM Print the content of the menu.
- 2160 COLOR K,W
- 2170 LOCATE 2,3 : PRINT "No";
- 2180 LOCATE 2,8 : PRINT "Name"
- 2190 LOCATE 2,19 : PRINT "Function of the Program"
- 2200 COLOR W,K
- 2210 COLOR K,W : LOCATE 4,3 : PRINT " 1"; : COLOR R,K
- 2220 LOCATE 4, 8 : PRINT "CREATPER";
- 2230 LOCATE 4, 19 : PRINT "Creates (FORMATS) a Persons File.";
- 2240 COLOR K,W : LOCATE 5,3 : PRINT " 2"; : COLOR R,K
- 2250 LOCATE 5, 8 : PRINT "CREATMAR";
- 2260 LOCATE 5, 19 : PRINT "Creates (FORMATS) a Marriages File.";
- 2270 IF DD.ORD$ = "no" THEN 2280 ELSE 2310
- 2280 COLOR R,K
- 2290 LOCATE 6,19 : PRINT " **(Formatting of Ordinance File has been Deleted.)**"
- 2300 GOTO 2340
- 2310 COLOR K,W : LOCATE 6,3 : PRINT " 3"; : COLOR R,K
- 2320 LOCATE 6, 8 : PRINT "CREATORD";
- 2330 LOCATE 6, 19 : PRINT "Creates (FORMATS) an Ordinances File.";
- 2340 COLOR K,W : LOCATE 7,3 : PRINT " 4"; : COLOR G,K
- 2350 LOCATE 7, 8 : PRINT "UPDATPER";
- 2360 LOCATE 7, 19 : PRINT "Updates Information in the Persons File."
- 2370 COLOR K,W : LOCATE 8,3 : PRINT " 5"; : COLOR G,K
- 2380 LOCATE 8, 8 : PRINT "UPDATMAR";
- 2390 LOCATE 8, 19 : PRINT "Updates Information in the Marriages File."
- 2400 IF DD.ORD$ = "no" THEN 2410 ELSE 2440
- 2410 COLOR G,K
- 2420 LOCATE 9,19 : PRINT " **(Updating of Ordinance File has been Deleted.)**"
- 2430 GOTO 2470
- 2440 COLOR K,W : LOCATE 9,3 : PRINT " 6"; : COLOR G,K
- 2450 LOCATE 9, 8 : PRINT "UPDATORD";
- 2460 LOCATE 9, 19 : PRINT "Updates Information in the Ordinances File."
- 2470 COLOR K,W : LOCATE 10,3 : PRINT " 7"; : COLOR R,K
- 2480 LOCATE 10, 8 : PRINT "INDEXPC ";
- 2490 LOCATE 10, 19 : PRINT "Prepares a Parent/Child Index. (For 13, 16, 18 and 19.)";
- 2500 COLOR K,W : LOCATE 11,3 : PRINT " 8"; : COLOR R,K
- 2510 LOCATE 11, 8 : PRINT "INDEXMAR";
- 2520 LOCATE 11, 19 : PRINT "Prepares a Marriages Index. (For 15, 16, 17, 18 and 19.)";
- 2530 COLOR K,W : LOCATE 12,3 : PRINT " 9"; : COLOR O,K
- 2540 LOCATE 12, 8 : PRINT "PRINTPER";
- 2550 LOCATE 12, 19 : PRINT "Prints Detailed Information about Persons.";
- 2560 COLOR K,W : LOCATE 13,3 : PRINT "10"; : COLOR O,K
- 2570 LOCATE 13, 8 : PRINT "PRINTMAR";
- 2580 LOCATE 13, 19 : PRINT "Prints Detailed Information about Marriages."
- 2590 COLOR K,W : LOCATE 14,3 : PRINT "11"; : COLOR O,K
- 2600 LOCATE 14, 8 : PRINT "LISTPER ";
- 2610 LOCATE 14, 19 : PRINT "Prints a List of the Persons in the Persons File."
- 2620 COLOR K,W : LOCATE 15,3 : PRINT "12"; : COLOR O,K
- 2630 LOCATE 15, 8 : PRINT "LISTMAR ";
- 2640 LOCATE 15, 19 : PRINT "Prints a List of the Marriages in the Marriages File."
- 2650 COLOR K,W : LOCATE 16,3 : PRINT "13"; : COLOR O,K
- 2660 LOCATE 16, 8 : PRINT "LISTPCI ";
- 2670 LOCATE 16, 19 : PRINT "Prints a List of the Parent/Child Index.";
- 2680 COLOR K,W : LOCATE 17,3 : PRINT "14"; : COLOR O,K
- 2690 LOCATE 17, 8 : PRINT "ALPHAPER";
- 2700 LOCATE 17, 19 : PRINT "Prints an Alphabetical List of Persons."
- 2710 COLOR K,W : LOCATE 18,3 : PRINT "15"; : COLOR O,K
- 2720 LOCATE 18, 8 : PRINT "ALPHAMAR";
- 2730 LOCATE 18, 19 : PRINT "Prints an Alphabetical List of Marriages."
- 2740 COLOR K,W : LOCATE 19,3 : PRINT "16"; : COLOR B,K
- 2750 LOCATE 19, 8 : PRINT "DISPLAY ";
- 2760 LOCATE 19, 19 : PRINT "Displays Genealogical Information on the Screen."
- 2770 COLOR K,W : LOCATE 20,3 : PRINT "17"; : COLOR G,K
- 2780 LOCATE 20, 8 : PRINT "PEDIGREE";
- 2790 LOCATE 20, 19 : PRINT "Prints Pedigree Charts (Family Trees)."
- 2800 COLOR K,W : LOCATE 21,3 : PRINT "18"; : COLOR G,K
- 2810 LOCATE 21, 8 : PRINT "FAMILY ";
- 2820 LOCATE 21, 19 : PRINT "Prints Family Group Sheets."
- 2830 COLOR K,W : LOCATE 22,3 : PRINT "19"; : COLOR B,K
- 2840 LOCATE 22, 8 : PRINT "DESCEND";
- 2850 LOCATE 22, 19 : PRINT "Displays (and Optionally Prints) Descendents Charts."
- 2860 COLOR W,K
- 2870 REM Now obtain User Response
- 2880 LOCATE 25,2 : PRINT "(0 to quit, 20 to restart the MENU)";
- 2890 LOCATE 24,1
- 2900 LINE INPUT "Type a Program Number, and press the 'enter' key.: "; REPLY$
- 2910 IF REPLY$ = "" THEN 1980
- 2920 IF REPLY$ = "0" THEN 3350
- 2930 REPLY = VAL(REPLY$)
- 2940 IF REPLY < 1 OR REPLY > 20 THEN 1980
- 2950 IF REPLY = 1 THEN KEY ON : CHAIN DD.PROG$+"creatper",,ALL
- 2960 IF REPLY = 2 THEN KEY ON : CHAIN DD.PROG$+"creatmar",,ALL
- 2970 IF DD.ORD$ = "no" THEN 2990
- 2980 IF REPLY = 3 THEN KEY ON : CHAIN DD.PROG$+"creatord",,ALL
- 2990 IF REPLY = 4 THEN KEY ON : CHAIN DD.PROG$+"updatper",,ALL
- 3000 IF REPLY = 5 THEN KEY ON : CHAIN DD.PROG$+"updatmar",,ALL
- 3010 IF DD.ORD$ = "no" THEN 3030
- 3020 IF REPLY = 6 THEN KEY ON : CHAIN DD.PROG$+"updatord",,ALL
- 3030 IF REPLY = 7 THEN KEY ON : CHAIN DD.PROG$+"indexpc" ,,ALL
- 3040 IF REPLY = 8 THEN KEY ON : CHAIN DD.PROG$+"indexmar",,ALL
- 3050 IF REPLY = 9 THEN KEY ON : CHAIN DD.PROG$+"printper",,ALL
- 3060 IF REPLY = 10 THEN KEY ON : CHAIN DD.PROG$+"printmar",,ALL
- 3070 IF REPLY = 11 THEN KEY ON : CHAIN DD.PROG$+"listper" ,,ALL
- 3080 IF REPLY = 12 THEN KEY ON : CHAIN DD.PROG$+"listmar" ,,ALL
- 3090 IF REPLY = 13 THEN KEY ON : CHAIN DD.PROG$+"listpci" ,,ALL
- 3100 IF REPLY = 14 THEN KEY ON : CHAIN DD.PROG$+"alphaper",,ALL
- 3110 IF REPLY = 15 THEN KEY ON : CHAIN DD.PROG$+"alphamar",,ALL
- 3120 IF REPLY = 16 THEN KEY ON : CHAIN DD.PROG$+"display" ,,ALL
- 3130 IF REPLY = 17 THEN KEY ON : CHAIN DD.PROG$+"pedigree",,ALL
- 3140 IF REPLY = 18 THEN KEY ON : CHAIN DD.PROG$+"family" ,,ALL
- 3150 IF REPLY = 19 THEN KEY ON : CHAIN DD.PROG$+"descend" ,,ALL
- 3160 IF REPLY = 20 THEN KEY ON : RUN DD.MENU$+"menu"
- 3170 REM Improper Response
- 3180 GOTO 1980
- 3190 REM Subroutine to draw a single horizontal line. Attach to double.
- 3200 COLOR P
- 3210 LOCATE R1, C1+1 : PRINT STRING$(C2-C1-1,196);
- 3220 LOCATE R1,C1 : PRINT CHR$(199);
- 3230 LOCATE R1,C2 : PRINT CHR$(182);
- 3240 COLOR W
- 3250 RETURN
- 3260 REM Subroutine to draw a single vertical line. Attach to double.
- 3270 COLOR P
- 3280 FOR I = R1 + 1 TO R2 - 1
- 3290 LOCATE I,C1 : PRINT CHR$(179);
- 3300 NEXT I
- 3310 LOCATE R1,C1 : PRINT CHR$(209);
- 3320 LOCATE R2,C1 : PRINT CHR$(207);
- 3330 COLOR W
- 3340 RETURN
- 3350 KEY ON : CLS
- 3360 REM Reset the Function Keys
- 3370 KEY 1, "LIST "
- 3380 KEY 2, "RUN"+CHR$(13)
- 3390 KEY 3, "LOAD"+CHR$(34)
- 3400 KEY 4, "SAVE"+CHR$(34)
- 3410 KEY 5, "CONT"+CHR$(13)
- 3420 KEY 6, ","+CHR$(34)+"LPT1:"+CHR$(34)+CHR$(13)
- 3430 KEY 7, "TRON"+CHR$(13)
- 3440 KEY 8, "TROFF"+CHR$(13)
- 3450 KEY 9, "KEY "
- 3460 KEY 10, "SCREEN 0,0,0"+CHR$(13)
- 3470 LOCATE 21,1
- 3480 PRINT "End of Program"
- 3490 END
-